home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1996 February
/
EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso
/
earcd
/
comm2
/
zpont311.lha
/
zpoint-3.11
/
Rexx
/
AutoMaps.zprx
< prev
next >
Wrap
Text File
|
1995-03-09
|
8KB
|
277 lines
/*
$VER: AutoMaps.zprx V2.3 (06.03.1995) © Björn Koch
Dieses Skript wurde speziell für Zodiac`s Point erstellt, und dient
zur automatischen Brettlistenverwaltung. Dabei wurde eine Anbindung an
den ZP-Brett-Manager (ZPBM) von Frank Meister eingebaut. Mit
AutoMaps.zprx kann man automatisch nach einem einstellbaren Zeitraum
eine neue Brettliste bei MAPS bestellen lassen. Ebenso wird diese nach
Erhalt automatisch auf Wunsch für ZPBM richtig abgespeicht, und
ebenfalls auf Wunsch sofort wieder zum löschen markiert.
Ebenso ist eine optionale automatisch Brettüberwachung eingebaut, die
mit der Brettliste auch die Liste der bisher bestellten Bretter bei
MAPS bestellt, und bei Bedarf diese auf fehlende Bretter untersucht.
Auf Wunsch koennen diese auch dirket wieder bestellt werden.
Das Skript legt folgende Dateien an (deren Namen frei einstellbar sind):
Brettliste.zp - Die Liste der verfügbaren Bretter
MyBretter.zp - Die Liste der bestellten Bretter
Dieses Skript darf beliebig kopieren werden, solange es zusammen mit
Zodiac's Point eingesetzt wird. Veränderungen ohne Erlaubnis des
Autors (außer dem Konfigurationsteil) sind nicht erlaubt.
Besonderer Dank geht an Hego, für die vielen Vorschläge und Bugreports ;).
Hinweise zur Installation:
WICHTIG: Diese Skript benötigt UNBEDINGT folgende Library:
- rexxsupport.library
Einfach dieses Skript in das Rexx-Verzeichnis von ZP kopieren, die
Feinabstimmung vornehmen und auf Wunsch die Zeile
"F1:SYS:Rexxc/rx ZP:Rexx/AutoMaps.zprx %s"
in die Datei 'fkeys.zp' einfügen.
Viel effektiver jedoch ist das Einfügen in die Skript-Datei
'stepin.zp' des entsprechenden Brettes. Dann sollte der Eintrag wie
folgt lauten:
"Run >NIL: SYS:Rexxc/rx ZP:Rexx/AutoMaps.zprx".
Dabei bitte an das S-Bit denken !!!
Nähere Angaben zu den Dateien 'fkeys.zp' und 'stepin.zp' sind in der
Guide-Datei zu Zodiac`s Point zu finden.
Die Benutzung und Installation dieses Skriptes erfolgt auf eigene
Gefahr, und der Autor übernimmt keine Haftung für eventuelle Schäden
jeder Art, die durch die Benutzung oder Installation erstanden sind
oder entstehen können.
Für Anregungen, Fehlermeldungen und Verbesserungsvorschläge ist der
Autor sehr dankbar und wie folgt zu erreichen:
Björn Koch H.Humpel@NOSTLGIC.oche.de
*/
/* Die Feinabstimmung: (Beginn Konfigurationsteil) */
MisterMaps = 'MAPS@NOSTLGIC.OCHE.DE' /* Genaue Adresse von MAPS */
MapsAnfordern = 'LIST BRETTER' /* Anforderung der Brettliste */
MapsListMy = 'LIST MY BRETTER' /* Anforderung der bestellten Bretter */
MapsBrettliste = 'BRETTLISTE' /* Das gibt MAPS als Brettliste wieder */
MapsMyBretter = 'Bisher bestellte Bretter' /* Das gibt MAPS als MyBretter wieder */
MapsBrettBestellung = 'ADD' /* So bestellt man Bretter */
TemporaerDatei = 'T:Brettliste' /* Die Dummy-Datei */
ZPBMBrettliste = 'ZP:Brettliste.zp' /* Hier liegt die Liste fuer ZPBM */
MyListe = 'ZP:MyBretter.zp' /* Hier liegt die MyBretter-Liste */
AutoDeleteBL = 0 /* Soll die Brettliste wieder geloescht werden? */
AutoDeleteML = 0 /* Soll die MyBretter-Liste wieder geloescht werden? */
AutoRequestBL = 1 /* Soll die Brettliste automatisch bestellt werden? */
AutoRequestML = 1 /* Soll die MyBretter-Liste automatisch bestellt werden? */
AutoCheck = 1 /* Sollen die bestellten Bretter ueberprueft werden? */
ListeStart = 3 /* In welcher zeile fangen die Eintraege an? */
RequestDelay = 7 /* Wieviel Tage darf die Brettliste maximal alt sein? */
/* AB HIER BITTE NICHTS MEHR ÄNDERN!!! (Ende Konfigurationsteil) */
OPTIONS RESULTS
PARSE ARG ZPPort
IF ZPPort == "" THEN
ZPPort = 'ZPoint'
ADDRESS VALUE ZPPort
IF (~SHOW('LIBRARIES', 'rexxsupport.library')) THEN
IF (~ADDLIB('rexxsupport.library', 0, -30, 0)) THEN DO
requestnotify 'Kann rexxsupport.library nicht öffnen!'
EXIT
END
WHICHLEVEL
Level=RESULT
IF Level ~= "BOARD" THEN DO
REQUESTNOTIFY " Dieses Skript arbeitet nur, wenn Du in einem Brett bist!!"
EXIT
END
Heute = Date('INTERNAL')
Cnzahl = 0
MapsBrettliste = UPPER(MapsBrettListe)
MapsMyBretter = UPPER(MapsMyBretter)
IF Exists(ZPBMBrettListe) THEN DO
LastDate = StateF(ZPBMBrettListe)
LastDate = Word(LastDate,5)
END
ELSE
LastDate = Heute - RequestDelay
GUILOCK ON
IF (Heute - LastDate >= RequestDelay) THEN DO
IF (AutoRequestBL = 1) THEN DO
CALL MakeNullDatei
WRITEMESSAGE TemporaerDatei RECEIVER MisterMaps SUBJECT '"'MapsAnfordern'"'
Erfolg = RESULT
IF (Erfolg ~= '') THEN DO
ADDRESS COMMAND
'setdate' ZPBMBrettliste
ADDRESS VALUE ZPPort
END
END
IF (AutoRequestML = 1) THEN DO
CALL MakeNullDatei
WRITEMESSAGE TemporaerDatei RECEIVER MisterMaps SUBJECT '"'MapsListMy'"'
Erfolg = RESULT
END
END
ELSE DO
SELECTMESSAGE NONE
JUMPTOMESSAGE 1
Keine = 0
DO WHILE (Keine = 0)
JUMPTOMESSAGE NAME MisterMaps
IF ~RC THEN
Keine = 1
ELSE DO
MESSAGEINFO FULLSUBJECT
Betreff = UPPER(RESULT)
MESSAGEINFO AGE
MarkNeu = RESULT
IF Betreff = MapsBrettliste THEN
IF MarkNeu = NEW THEN
CALL NeueBrettListe
IF Betreff = MapsMyBretter THEN
IF MarkNeu = NEW THEN
CALL NeueMyListe
END
DOWN 1
IF (RC = 0) THEN
Keine = 1
END
END
GUILOCK OFF
ADDRESS COMMAND
IF Exists(TemporaerDatei) THEN
'delete >NIL:' TemporaerDatei
EXIT
/* Die Unterroutinen... */
MakeNullDatei:
CALL OPEN('DummyDatei',TemporaerDatei,'W')
Erfolg = WRITELN('DummyDatei','')
CALL CLOSE('DummyDatei')
RETURN
NeueBrettListe:
SAVEMESSAGEBODY TemporaerDatei
ADDRESS COMMAND
'copy' TemporaerDatei ZPBMBrettliste
'delete >NIL:' TemporaerDatei
ADDRESS VALUE ZPPort
IF (AutoDeleteBL = 1) THEN
DELETE ONE
ELSE
MARKASOLD
RETURN
NeueMyListe:
SAVEMESSAGEBODY TemporaerDatei
IF (AutoCheck = 1) THEN
IF EXISTS(MyListe) THEN
CALL CheckMyListe
ADDRESS COMMAND
'copy' TemporaerDatei MyListe
'delete >NIL:' TemporaerDatei
ADDRESS VALUE ZPPort
IF (Cnzahl >= 1) THEN
CALL BrettBestellen
IF (AutoDeleteML = 1) THEN
DELETE ONE
ELSE
MARKASOLD
RETURN
CheckMyListe:
CALL Open('NeueListe',TemporaerDatei,'R')
Anzahl = 1
DO WHILE Anzahl < ListeStart
RESULT = READLN('NeueListe')
Anzahl = Anzahl + 1
END
Anzahl = 0
DO WHILE ~EOF('NeueListe')
Anzahl = Anzahl + 1
NeuBrett.Anzahl = ReadLn('NeueListe')
END
CALL CLOSE('NeueListe')
CALL Open('AlteListe',MyListe,'R')
Bnzahl = 1
DO WHILE Bnzahl < ListeStart
RESULT = ReadLn('AlteListe')
Bnzahl = Bnzahl + 1
END
Bnzahl = 0
DO WHILE ~EOF('AlteListe')
Bnzahl = Bnzahl + 1
AltBrett.Bnzahl = ReadLn('AlteListe')
END
CALL Close('AlteListe')
StimmtNoch = 1
StimmtBis = 0
Cnzahl = 0
DO j = 1 TO Bnzahl-1
IF (StimmtNoch = 1) THEN
StimmtBis = StimmtBis + 1
IstDa = 0
DO i = StimmtBis TO Anzahl-1 WHILE ~IstDa
dummy = AltBrett.j
dummy = NeuBrett.i
IF AltBrett.j = NeuBrett.i THEN
IstDa = 1
ELSE
StimmtNoch = 0
END
IF ~IstDa THEN DO
Cnzahl = Cnzahl + 1
FehlBrett.Cnzahl = AltBrett.j
END
END
RETURN
BrettBestellen:
CALL OPEN('DummyDatei',TemporaerDatei,'W')
DO i = 1 TO Cnzahl
String = "Das Brett "||FehlBrett.i||" ist nicht mehr bestellt!! Soll ich es neu bestellen?"
REQUESTRESPONSE String
IF (RC) THEN
Erfolg = WriteLn('DummyDatei',FehlBrett.i)
END
CALL CLOSE('DummyDatei')
WRITEMESSAGE TemporaerDatei RECEIVER MisterMaps SUBJECT '"'MapsBrettBestellung'"'
RETURN
/* ... und ENDE! */